﻿using Pe.Petecos.Comercial.Cross.Core.Constantes;
using Pe.Petecos.Comercial.Infraestructura.Core.Contract.Seguridad;
using Pe.Petecos.Comercial.Infraestructura.Model.Seguridad;
using Pe.Petecos.Comercial.Infraestructura.Repository.Base;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Pe.Petecos.Comercial.Infraestructura.Repository.Implements.Seguridad
{
    public class UsuarioRepository : QueryRepository, IUsuarioRepository
    {
        public List<UsuarioLogic> Buscar(int codigoUsuario = 0, string codigoEstado = "", string nombreUsuario = "")
        {
            SqlParameter[] parametros = new SqlParameter[]
            {
                new SqlParameter("CODIGO_USUARIO", SqlDbType.Int) { Value = (object)codigoUsuario ?? DBNull.Value },
                new SqlParameter("CODIGO_ESTADO", SqlDbType.VarChar) { Value = (object)codigoEstado ?? DBNull.Value },
                new SqlParameter("NOMBRE", SqlDbType.VarChar) { Value = (object)nombreUsuario ?? DBNull.Value },
            };

            return this.dataBaseProvider.ExecuteStoreProcedure<UsuarioLogic>("SEG.USP_USUARIO_SEL", parametros).ToList();

        }

        public UsuarioLogic Loguear(string cuenta)
        {
            SqlParameter[] parametros = new SqlParameter[]
            {
                new SqlParameter("CUENTA", SqlDbType.VarChar) { Value = (object)cuenta ?? DBNull.Value },
                new SqlParameter("CODIGO_ESTADO", SqlDbType.VarChar) { Value = DatosConstantes.EstadoGenerico.Activo }
            };

            return this.dataBaseProvider.ExecuteStoreProcedure<UsuarioLogic>("SEG.USP_LOGUEO_USUARIO_SEL", parametros).FirstOrDefault();
        }
    }
}
